package com.sh.data.engine.domain.normalization.index.model.domain;

import com.sh.data.engine.domain.base.model.BaseDomain;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

import java.util.Date;
import java.util.List;

/**
 * @author tinglan.ys
 * @description:
 * @date 2022/4/22 下午4:08
 */
@Data
@SuperBuilder
@NoArgsConstructor
public class IndexDomain extends BaseDomain {

    /**
     * 指标编号 用于分类：不同版本的指标虽然id不同，但是指标编号是一样的
     */
    private Long indexNum;

    /**
     * 空间id
     */
    private String projectId;

    /**
     * 指标名称
     */
    private String name;

    /**
     * 指标目录id
     */
    private String indexCatalogId;

    /**
     * 业务定义
     */
    private String businessDef;

    /**
     * 计算规则
     */
    private String calculationRule;

    /**
     * 时间粒度：day，week，month，quarter，year，rt(实时)
     */
    private String timeGranularity;

    private String timeGranularityCN;

    /**
     * 数据ownerId
     */
    private Long dataOwnerId;

    private String dataOwnerName;

    /**
     * 分析维度
     */
    private String analysisDimension;

    /**
     * 备注
     */
    private String remark;

    /**
     * 版本
     */
    private String version;

    /**
     * 状态 0-待开发 1-已完成
     */
    private Integer status;

    /**
     * 指标结果(保留字段)
     */
    private String indexResult;

    /**
     * 数据更新时间
     */
    private Date dataUptTime;

    /**
     * 指标关联
     */
    private IndexCorrelation indexCorrelation;

    /**
     * 指标关联的表明
     */
    private String tblName;

    /**
     * 指标关联的表id
     */
    private Long tblId;

    /**
     * 属于该指标编号indexNumber的指标 拥有的版本号列表
     */
    private List<String> versionList;

    /**
     * 用于跳转的离线任务id
     */
    private String nodeId;

    /**
     * 该指标对应的数据服务的接口地址
     */
    private List<String> apiPathList;

    @Data
    public static class IndexCorrelation {
        private Long tblId;
        private String tblName;
    }

    /**
     * 计量单位
     */
    private String unit;

    /**
     * 发布状态
     */
    private Integer release;

    private String creator;

    private Long themeId;
}
